import axios from "axios";
import router from "@/router";
import ElementUI from "element-ui";
const service = axios.create({
  // baseURL: "/api",
  withCredentials: true, //运行可带携带认证给服务器,将cookie传递给服务器
  timeout: 1000 * 10, //请求不超过10秒
});

//请求拦截器
service.interceptors.request.use(function (config) {
  //登入请求 获取验证码请求不需要携带token
  let accessPath = ["/users/getCaptcha", "/users/login"];
  let r = accessPath.some((item) => config.url === item);
  if (r) {
    //不需要携带token
    return config; //放行
  } else {
    let token = localStorage.getItem("yf-token");
    config.headers["authorization"] = token;
    return config;
  }
});
//未登入状态的code是10022 校验失败的code是1004
//响应拦截器
service.interceptors.response.use(function (config) {
  // console.log(config);
  //如果是响应验证码就不需要拦截
  //如果响应的状态是10022或者1004 那么需要跳转到登入页
  let regExp = /^\/users\/verifyCaptcha.+/;
  let { url } = config.config;
  if (url === "/users/getCaptcha" || regExp.test(url) || url === "/login") {
    return config;
  } else {
    //其它请求响应
    if (config.data.code === "10022" || config.data.code === "1004") {
      //如果响应的状态是10022或者1004 那么需要跳转到登入页
      ElementUI.Message.error("登入过期,请重新登入");
      router.push("/login");
      localStorage.removeItem('yf-token')
    } else {
      return config;
    }
  }
});
// console.log(ElementUI)
export default service;
